/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package test;

/**
 *
 * @author Administrador
 */
public class test {
	private MyClockTest gameClock;
	//==============================================================================================
	//	VARIABLES PARA PRUEBA DEL RELOJ
	//==============================================================================================
	/**Tiempo en ns que indica el momento en que se inicio el ciclo*/
	private long timeStartCicle;
	/**Tiempo en ns que indica el momento en que se finalizó el ciclo*/
	private long timeEndCicle;
	/**Tiempo en ns en que el Thread volvio de permanecer dormido*/
	private long timeOverSleep;
	
	public static void main(String[] args){
		new test();
	}

	public test(){
		/*	FPS: 50
		 *	Período: 20 ms --- 20.000.000 ns
		 */
		gameClock = new MyClockTest();
		//================================================================================================
		calculeClock(0,10,12);
		//================================================================================================
		calculeClock(0,30,10);
		//================================================================================================
		calculeClock(0,12,13);
		//================================================================================================
		calculeClock(0,45,2);
		//================================================================================================
		calculeClock(0,12,10);
		//================================================================================================
		calculeClock(0,9,11);
	}

	private void calculeClock(int start, int end, int over){
		//==========================================================================================
		//Establecemos las diferencias de tiempo
		//==========================================================================================
		timeStartCicle	= timeOverSleep		+ ((long)start	* 1000000L); //ms --> ns
		timeEndCicle	= timeStartCicle	+ ((long)end	* 1000000L); //ms --> ns
		timeOverSleep	= timeEndCicle		+ ((long)over	* 1000000L); //ms --> ns

		println("===============================================================================");
		println("NUEVO CICLO DE PRUEBAS PARA EL CLOCK");
		println("===============================================================================");
		println("timeStartCicle:" + timeStartCicle + " ns --- " + ( timeStartCicle / 1000000L ) + " ms");
		println("timeEndCicle  :" + timeEndCicle + " ns --- " + ( timeEndCicle / 1000000L ) + " ms");
		println("timeOverSleep :" + timeOverSleep + " ns --- " + ( timeOverSleep / 1000000L) + " ms");
		println("-------------------------------------------------------------------------------");

		gameClock.setTime(timeStartCicle);
		gameClock.registerStartCicle();
		gameClock.setTime(timeEndCicle);
		gameClock.registerEndCicle();
		println(gameClock.toString());
		if ( gameClock.requireSleepTime() > 0 ){

			println("Tiempo de sueño menor a período. Sueño: " + gameClock.getSleepInMilliseconds() + " ms");
			gameClock.setTime(timeOverSleep);
			gameClock.registerSleepTime();
			println(gameClock.toString());
		}else{
			timeOverSleep = timeEndCicle;
			println("Tiempo de sueño mayor a período");
			println("Requiere yield():" + gameClock.requiereYield());
			println(gameClock.toString());
		}
		println("Frames to skip:" + gameClock.requiereFramesToSkip());
		println(gameClock.toString());
	}

	private void println(String s){System.out.println(s);}
}
